/**
 * Project: apollo-base-dal
 * 
 * File Created at 2016年4月30日
 * 
 * Copyright 2015-2016 dx.com Croporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * DongXue software Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with dx.com.
 */
package com.dx.pf.dal.router.dataSource;

import java.util.ArrayList;
import java.util.List;

/** 
* @ClassName: DataSourceContextHolder 
* @Description:数据源上下文
* @author wuzhenfang(wzfbj2008@163.com)
* @date 2016年4月30日 上午11:53:16 
* @version V1.0 
*/
public class DynamicDataSourceContextHolder {

	/**
	 * 当使用ThreadLocal维护变量时，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     * 所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
	 */
	private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();

	/**
	 * 管理所有的数据源id;
     * 主要是为了判断数据源是否存在;
	 */
	public static List<String> dataSourceIds = new ArrayList<String>();

	public static void setDataSourceOne() {
		setCustomerType("dataSourceOne");
	}

	public static void setDataSourceTwo() {
		setCustomerType("dataSourceTwo");
	}

	/**
	 * 使用setDataSourceType设置当前的
	 * @param customerType
	 */
	private static void setCustomerType(String customerType) {
		contextHolder.set(customerType);
	}

	public static String getCustomerType() {
		return contextHolder.get();
	}

	public static void clearCustomerType() {
		contextHolder.remove();
	}

	/**
	 * 判断指定DataSrouce当前是否存在
	 * @param dataSourceId
	 * @return
	 */
	public static boolean containsDataSource(String dataSourceId) {
		return dataSourceIds.contains(dataSourceId);
	}
}
